package algorithm.sort;

/**
 * 冒泡排序
 * @author lsw
 * 2020-9-3 16:33:23
 */
public class BubbleSort {
    /*public int[] bubbleSort(int[] a){
        for (int i=0;i<a.length;i++){
            for (int j=0;j<a.length-i-1;j++){
                if (a[j]>a[j+1]) {
                    int mid;
                    mid = a[j];
                    a[j] = a[j+1];
                    a[j+1] = mid;
                }
            }
        }
        return a;
    }*/
    public int[] bubbleSort(int[] a){
        int temp; // 临时变量
        boolean flag; //本次循环是否发生了交换
        for (int i=0;i<a.length;i++) {
            // 每次遍历之前，flag都要置为false
            flag = false;
            for (int j = a.length -1; j > i; j--) {
                if (a[j] < a[j - 1]) {
                    temp = a[j];
                    a[j] = a[j - 1];
                    a[j - 1] = temp;
                    flag = true;// 发生了交换，flag置为true，证明本次遍历发生了交换
                }
            }
            if (!flag) { // 如果flag为flag，即没有发生交换，则证明数组已经排好序，直接返回结果
                break;
            }
        }
        return a;
    }


    public static void main(String[] args) {
        int[] a = {1,8,5,2,4,9,7};
        BubbleSort sort = new BubbleSort();
        int[] array = sort.bubbleSort(a);
        for (int i=0;i<a.length;i++){
            System.out.print(a[i]+",");
        }
    }
}
